namespace ext.grid
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Adds the ability for single level grouping to the grid. A {@link Ext.data.GroupingStore GroupingStore}
	/// must be used to enable grouping. Some grouping characteristics may also be configured at the
	/// {@link Ext.grid.Column Column level}   {@link Ext.grid.Column#emptyGroupText emptyGroupText}  {@link Ext.grid.Column#groupable groupable}  {@link Ext.grid.Column#groupName groupName}  {@link Ext.grid.Column#groupRender groupRender}    Sample usage:  
	/// var grid = new Ext.grid.GridPanel({
	/// // A groupingStore is required for a GroupingView
	/// store: new {@link Ext.data.GroupingStore}({
	/// autoDestroy: true,
	/// reader: reader,
	/// data: xg.dummyData,
	/// sortInfo: {field: &apos;company&apos;, direction: &apos;ASC&apos;},
	/// {@link Ext.data.GroupingStore#groupOnSort groupOnSort}: true,
	/// {@link Ext.data.GroupingStore#remoteGroup remoteGroup}: true,
	/// {@link Ext.data.GroupingStore#groupField groupField}: &apos;industry&apos;
	/// }),
	/// colModel: new {@link Ext.grid.ColumnModel}({
	/// columns:[
	/// {id:&apos;company&apos;,header: &apos;Company&apos;, width: 60,...
	/// </summary>
	/// <htmlSummary>
	/// Adds the ability for single level grouping to the grid. A {@link Ext.data.GroupingStore GroupingStore}
	/// must be used to enable grouping. Some grouping characteristics may also be configured at the
	/// {@link Ext.grid.Column Column level}&lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
	/// &lt;li&gt;&lt;code&gt;{@link Ext.grid.Column#emptyGroupText emptyGroupText}&lt;/code&gt;&lt;/li&gt;
	/// &lt;li&gt;&lt;code&gt;{@link Ext.grid.Column#groupable groupable}&lt;/code&gt;&lt;/li&gt;
	/// &lt;li&gt;&lt;code&gt;{@link Ext.grid.Column#groupName groupName}&lt;/code&gt;&lt;/li&gt;
	/// &lt;li&gt;&lt;code&gt;{@link Ext.grid.Column#groupRender groupRender}&lt;/code&gt;&lt;/li&gt;
	/// &lt;/ul&gt;&lt;/div&gt;
	/// &lt;p&gt;Sample usage:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// var grid = new Ext.grid.GridPanel({
	/// // A groupingStore is required for a GroupingView
	/// store: new {@link Ext.data.GroupingStore}({
	/// autoDestroy: true,
	/// reader: reader,
	/// data: xg.dummyData,
	/// sortInfo: {field: &apos;company&apos;, direction: &apos;ASC&apos;},
	/// {@link Ext.data.GroupingStore#groupOnSort groupOnSort}: true,
	/// {@link Ext.data.GroupingStore#remoteGroup remoteGroup}: true,
	/// {@link Ext.data.GroupingStore#groupField groupField}: &apos;industry&apos;
	/// }),
	/// colModel: new {@link Ext.grid.ColumnModel}({
	/// columns:[
	/// {id:&apos;company&apos;,header: &apos;Company&apos;, width: 60, dataIndex: &apos;company&apos;},
	/// // {@link Ext.grid.Column#groupable groupable}, {@link Ext.grid.Column#groupName groupName}, {@link Ext.grid.Column#groupRender groupRender} are also configurable at column level
	/// {header: &apos;Price&apos;, renderer: Ext.util.Format.usMoney, dataIndex: &apos;price&apos;, {@link Ext.grid.Column#groupable groupable}: false},
	/// {header: &apos;Change&apos;, dataIndex: &apos;change&apos;, renderer: Ext.util.Format.usMoney},
	/// {header: &apos;Industry&apos;, dataIndex: &apos;industry&apos;},
	/// {header: &apos;Last Updated&apos;, renderer: Ext.util.Format.dateRenderer(&apos;m/d/Y&apos;), dataIndex: &apos;lastChange&apos;}
	/// ],
	/// defaults: {
	/// sortable: true,
	/// menuDisabled: false,
	/// width: 20
	/// }
	/// }),
	///
	/// view: new Ext.grid.GroupingView({
	/// {@link Ext.grid.GridView#forceFit forceFit}: true,
	/// // custom grouping text template to display the number of items per group
	/// {@link #groupTextTpl}: &apos;{text} ({[values.rs.length]} {[values.rs.length &gt; 1 ? &quot;Items&quot; : &quot;Item&quot;]})&apos;
	/// }),
	///
	/// frame:true,
	/// width: 700,
	/// height: 450,
	/// collapsible: true,
	/// animCollapse: false,
	/// title: &apos;Grouping Example&apos;,
	/// iconCls: &apos;icon-grid&apos;,
	/// renderTo: document.body
	/// });
	/// &lt;/code&gt;&lt;/pre&gt;
	/// </htmlSummary>
	/// <definedin>src\widgets\grid\GroupingView.js</definedin>
	[ScriptName("GroupingView")]
	[ScriptNamespace("Ext.grid")]
	[Imported()]
	public partial class GroupingView : ext.grid.GridView
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config"></param>
		public GroupingView(ext.grid.GroupingView_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public GroupingView()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// Text displayed in the grid header menu for grouping by a column
		/// (defaults to &apos;Group By This Field&apos;).
		/// </summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("groupByText")]
		public string GroupByText;
		
		/// <summary>
		/// Text displayed in the grid header for enabling/disabling grouping
		/// (defaults to &apos;Show in Groups&apos;).
		/// </summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("showGroupsText")]
		public string ShowGroupsText;
		
		/// <summary>true to hide the column that is currently grouped (defaults to false)</summary>
		/// <htmlSummary>&lt;tt&gt;true&lt;/tt&gt; to hide the column that is currently grouped (defaults to &lt;tt&gt;false&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("hideGroupedColumn")]
		public bool HideGroupedColumn;
		
		/// <summary>
		/// If true will display a prefix plus a &apos;: &apos; before the group field value
		/// in the group header line. The prefix will consist of the {@link Ext.grid.Column#groupName groupName}
		/// (or the configured {@link Ext.grid.Column#header header} if not provided) configured in the
		/// {@link Ext.grid.Column} for each set of grouped rows (defaults to true).
		/// </summary>
		/// <htmlSummary>
		/// If &lt;tt&gt;true&lt;/tt&gt; will display a prefix plus a &apos;: &apos; before the group field value
		/// in the group header line. The prefix will consist of the &lt;tt&gt;&lt;b&gt;{@link Ext.grid.Column#groupName groupName}&lt;/b&gt;&lt;/tt&gt;
		/// (or the configured &lt;tt&gt;&lt;b&gt;{@link Ext.grid.Column#header header}&lt;/b&gt;&lt;/tt&gt; if not provided) configured in the
		/// {@link Ext.grid.Column} for each set of grouped rows (defaults to &lt;tt&gt;true&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("showGroupName")]
		public bool ShowGroupName;
		
		/// <summary>true to start all groups collapsed (defaults to false)</summary>
		/// <htmlSummary>&lt;tt&gt;true&lt;/tt&gt; to start all groups collapsed (defaults to &lt;tt&gt;false&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("startCollapsed")]
		public bool StartCollapsed;
		
		/// <summary>false to disable grouping functionality (defaults to true)</summary>
		/// <htmlSummary>&lt;tt&gt;false&lt;/tt&gt; to disable grouping functionality (defaults to &lt;tt&gt;true&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("enableGrouping")]
		public bool EnableGrouping;
		
		/// <summary>true to enable the grouping control in the column menu (defaults to true)</summary>
		/// <htmlSummary>&lt;tt&gt;true&lt;/tt&gt; to enable the grouping control in the column menu (defaults to &lt;tt&gt;true&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("enableGroupingMenu")]
		public bool EnableGroupingMenu;
		
		/// <summary>true to allow the user to turn off grouping (defaults to true)</summary>
		/// <htmlSummary>&lt;tt&gt;true&lt;/tt&gt; to allow the user to turn off grouping (defaults to &lt;tt&gt;true&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("enableNoGroups")]
		public bool EnableNoGroups;
		
		/// <summary>
		/// The text to display when there is an empty group value (defaults to &apos;(None)&apos;).
		/// May also be specified per column, see {@link Ext.grid.Column}.{@link Ext.grid.Column#emptyGroupText emptyGroupText}.
		/// </summary>
		/// <htmlSummary>
		/// The text to display when there is an empty group value (defaults to &lt;tt&gt;&apos;(None)&apos;&lt;/tt&gt;).
		/// May also be specified per column, see {@link Ext.grid.Column}.{@link Ext.grid.Column#emptyGroupText emptyGroupText}.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("emptyGroupText")]
		public string EmptyGroupText;
		
		/// <summary>true to skip refreshing the view when new rows are added (defaults to false)</summary>
		/// <htmlSummary>&lt;tt&gt;true&lt;/tt&gt; to skip refreshing the view when new rows are added (defaults to &lt;tt&gt;false&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("ignoreAdd")]
		public bool IgnoreAdd;
		
		/// <summary>
		/// The template used to render the group header (defaults to &apos;{text}&apos;).
		/// This is used to format an object which contains the following properties:
		///   group : String The rendered value of the group field.
		/// By default this is the unchanged value of the group field. If a {@link Ext.grid.Column#groupRenderer groupRenderer}
		/// is specified, it is the result of a call to that function.   gvalue : Object The raw value of the group field.   text : String The configured header (as described in {@link #showGroupName})
		/// if {@link #showGroupName} is true) plus the rendered group field value.   groupId : String A unique, generated ID which is applied to the
		/// View Element which contains the group.   startRow : Number The row index of the Record which caused group change.   rs : Array Contains a single element: The Record providing the data
		/// for the row which caused group change.   cls : String The generated class name string to apply to the group header Element.   style : String The inline style...
		/// </summary>
		/// <htmlSummary>
		/// The template used to render the group header (defaults to &lt;tt&gt;&apos;{text}&apos;&lt;/tt&gt;).
		/// This is used to format an object which contains the following properties:
		/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;group&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;The &lt;i&gt;rendered&lt;/i&gt; value of the group field.
		/// By default this is the unchanged value of the group field. If a &lt;tt&gt;&lt;b&gt;{@link Ext.grid.Column#groupRenderer groupRenderer}&lt;/b&gt;&lt;/tt&gt;
		/// is specified, it is the result of a call to that function.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;gvalue&lt;/b&gt; : Object&lt;p class=&quot;sub-desc&quot;&gt;The &lt;i&gt;raw&lt;/i&gt; value of the group field.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;text&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;The configured header (as described in &lt;tt&gt;{@link #showGroupName})&lt;/tt&gt;
		/// if &lt;tt&gt;{@link #showGroupName}&lt;/tt&gt; is &lt;tt&gt;true&lt;/tt&gt;) plus the &lt;i&gt;rendered&lt;/i&gt; group field value.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;groupId&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;A unique, generated ID which is applied to the
		/// View Element which contains the group.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;startRow&lt;/b&gt; : Number&lt;p class=&quot;sub-desc&quot;&gt;The row index of the Record which caused group change.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;rs&lt;/b&gt; : Array&lt;p class=&quot;sub-desc&quot;&gt;Contains a single element: The Record providing the data
		/// for the row which caused group change.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;cls&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;The generated class name string to apply to the group header Element.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;style&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;The inline style rules to apply to the group header Element.&lt;/p&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;&lt;/p&gt;
		/// See {@link Ext.XTemplate} for information on how to format data using a template. Possible usage:&lt;pre&gt;&lt;code&gt;
		/// var grid = new Ext.grid.GridPanel({
		/// ...
		/// view: new Ext.grid.GroupingView({
		/// groupTextTpl: &apos;{text} ({[values.rs.length]} {[values.rs.length &gt; 1 ? &quot;Items&quot; : &quot;Item&quot;]})&apos;
		/// }),
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("groupTextTpl")]
		public string GroupTextTpl;
		
		/// <summary>
		/// Indicates how to construct the group identifier. &apos;value&apos; constructs the id using
		/// raw value, &apos;display&apos; constructs the id using the rendered value. Defaults to &apos;value&apos;.
		/// </summary>
		/// <htmlSummary>
		/// Indicates how to construct the group identifier. &lt;tt&gt;&apos;value&apos;&lt;/tt&gt; constructs the id using
		/// raw value, &lt;tt&gt;&apos;display&apos;&lt;/tt&gt; constructs the id using the rendered value. Defaults to &lt;tt&gt;&apos;value&apos;&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("groupMode")]
		public string GroupMode;
		
		/// <summary>
		/// This property must be configured in the {@link Ext.grid.Column} for
		/// each column.
		/// </summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("groupRenderer")]
		public System.Delegate GroupRenderer;
		
		/// <summary>True to cancel any editing when the group header is toggled. Defaults to true.</summary>
		/// <htmlSummary>True to cancel any editing when the group header is toggled. Defaults to &lt;tt&gt;true&lt;/tt&gt;.</htmlSummary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("cancelEditOnToggle")]
		public bool CancelEditOnToggle;
		#endregion
		
		#region Methods
		/// <summary>Expands all grouped rows.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("expandAllGroups")]
		public void ExpandAllGroups()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Collapses all grouped rows.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("collapseAllGroups")]
		public void CollapseAllGroups()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Dynamically tries to determine the groupId of a specific value</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		/// <param name="value"></param>
		/// <returns>The group id</returns>
		[ScriptName("getGroupId")]
		public string GetGroupId(string value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Toggle the group that contains the specific row.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		/// <param name="rowIndex">The row inside the group</param>
		/// <param name="expanded"></param>
		[ScriptName("toggleRowIndex")]
		public void ToggleRowIndex(System.Number rowIndex, bool expanded)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Toggle the group that contains the specific row.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		/// <param name="rowIndex">The row inside the group</param>
		[ScriptName("toggleRowIndex")]
		public void ToggleRowIndex(System.Number rowIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Toggles the specified group if no value is passed, otherwise sets the expanded state of the group to the value passed.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		/// <param name="groupId">The groupId assigned to the group (see getGroupId)</param>
		/// <param name="expanded"></param>
		[ScriptName("toggleGroup")]
		public void ToggleGroup(string groupId, bool expanded)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Toggles the specified group if no value is passed, otherwise sets the expanded state of the group to the value passed.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		/// <param name="groupId">The groupId assigned to the group (see getGroupId)</param>
		[ScriptName("toggleGroup")]
		public void ToggleGroup(string groupId)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Toggles all groups if no value is passed, otherwise sets the expanded state of all groups to the value passed.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		/// <param name="expanded"></param>
		[ScriptName("toggleAllGroups")]
		public void ToggleAllGroups(bool expanded)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Toggles all groups if no value is passed, otherwise sets the expanded state of all groups to the value passed.</summary>
		/// <definedin>src\widgets\grid\GroupingView.js</definedin>
		[ScriptName("toggleAllGroups")]
		public void ToggleAllGroups()
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
